package cn.edu.sdjzu.knoverse.utils.context;

import cn.dev33.satoken.stp.StpUtil;
import cn.edu.sdjzu.knoverse.constant.SaSessionConstant;
import cn.edu.sdjzu.knoverse.model.vo.system.user.LoginVo;

/**
 * 基础上下文类，提供获取当前登录用户信息的方法
 * 适配sa-token框架
 */
public class BaseContext {
    /**
     * 获取当前登录用户ID
     *
     * @return 当前登录用户ID
     */
    public static Long getUserId() {
        if (!StpUtil.isLogin()) {
            return null;
        }
        LoginVo userInfo = (LoginVo) StpUtil.getSession().get(SaSessionConstant.USER);
        return userInfo != null ? userInfo.getId() : null;
    }

    /**
     * 获取当前登录用户名
     *
     * @return 当前登录用户名
     */
    public static String getUsername() {
        if (!StpUtil.isLogin()) {
            return null;
        }
        LoginVo userInfo = (LoginVo) StpUtil.getSession().get(SaSessionConstant.USER);
        return userInfo != null ? userInfo.getUsername() : null;
    }

    /**
     * 获取当前登录用户信息
     *
     * @return 当前登录用户信息
     */
    public static LoginVo getLoginVo() {
        if (!StpUtil.isLogin()) {
            return null;
        }
        return (LoginVo) StpUtil.getSession().get(SaSessionConstant.USER);
    }

    /**
     * 设置当前登录用户信息
     *
     * @param loginVo 用户信息对象
     */
    public static void setLoginVo(LoginVo loginVo) {
        if (StpUtil.isLogin()) {
            StpUtil.getSession().set(SaSessionConstant.USER, loginVo);
        }
    }
}